System V IPC 개념 (메시지 큐·세마포어·공유메모리)
NOTE
System V가 유닉스 버전 이름이라는 것부터, System V IPC 3형제(메시지 큐/세마포어/공유메모리)의 공통 패턴과 POSIX IPC라는 대안까지 정리한다.
0. System V는 OS 이름이 아니라 유닉스 계보 이름
“System V(시스템 파이브)“는 1983년 AT&T가 내놓은 유닉스 버전입니다. 유닉스는 크게 두 갈래로 발전했습니다.
| 계보 | 대표 진영 | 대표 기능 |
|---|---|---|
| BSD | 버클리 대학 | 소켓(socket) |
| System V | AT&T | 메시지 큐 / 세마포어 / 공유메모리 |
리눅스를 포함한 대부분의 현대 유닉스 계열 OS는 두 계보의 기능을 다 흡수했고, 그래서 리눅스에도 System V 스타일 API(msgget, semget, shmget)가 그대로 남아 있습니다.
1. System V IPC = 3형제
| 기능 | 생성 함수 | 용도 |
|---|---|---|
| 메시지 큐 | msgget | 구조화된 메시지 송수신 |
| 세마포어 | semget | 동시성 제어(락/카운터)를 여러 프로세스 간에 |
| 공유메모리 | shmget | 같은 메모리 영역을 여러 프로세스가 직접 접근 |
셋 다 이름이 *get으로 시작하고, key(정수) 하나로 자원을 식별한다는 공통 패턴을 가집니다. 세부 내용은:
- 메시지 큐 → 메시지 큐 API
- 키 생성 방식 → ftok과 IPC 키 생성
- 세마포어 → 세마포어와 동시성 제어
2. POSIX IPC라는 대안도 있음
같은 목적을 하는 더 최신 표준 인터페이스로 mq_open, sem_open, shm_open(POSIX IPC)이 있습니다. 사내 프레임워크나 미들웨어가 System V 방식(msgget 계열)을 감싸서(wrapping) 자체 API로 제공하는 경우도 흔합니다 — 실제 예제는 이름-키 매핑 테이블 방식의 IPC 키 관리 참고.
핵심
System V = 유닉스 버전 이름. System V IPC = 그 버전에서 나온 프로세스 간 통신 방식 3종(메시지 큐 / 세마포어 / 공유메모리) 세트.